1. Technical Field
The present invention relates generally to controlling switch routing in hybrid networks, and more particularly, to a system and method for controlling legacy and programmable switch routing in hybrid networks.
2. Description of the Related Art
Hybrid networks include both legacy and programmable (e.g., OpenFlow™) switches which improve network performance by employing software-defined networking (SDN) without requiring an upgrade of an entire network. Conventional systems and methods add SDN capabilities to switches at strategic places in a network and ensure that each flow traverses at least one such switch to achieve control of many SDN paradigms (e.g., routing, access control, etc.). however, the control points are limited to SDN-enabled devices, and operators cannot enforce fine-grained policies on the legacy paths between SDN switches.
SDN provides a logically-centralized interface to control and interact with network devices. Operators perform network management tasks (e.g., traffic engineering, access control, etc.) using programs executed from a centralized controller. The flexible control and expanded visibility offered by SDN may greatly reduce the cost of operating a network. However, fully benefitting from SDN conventionally requires a considerable initial investment, as network providers must conventionally upgrade or replace all legacy devices with programmable ones (e.g., ones whose forwarding tables are programmable remotely from a logically-centralized controller using a specialized protocol (e.g., OpenFlow™)).
Recently, attempts have been made to reduce capital expenditure of SDNs while maintaining most benefits of SDNs by upgrading only a few, strategically chosen devices in a network (e.g., hybrid network including programmable and legacy switches). However, although effective at controlling paths through SDN-enabled devices, conventional systems cannot dynamically affect the configuration of legacy switches and consequently, through the legacy network. Legacy network paths between two SDN switches are conventionally coarsely controlled using VLANs or tunnels, or simply left to the latitude of Layer 2 routing protocols (e.g., STP, ECMP, etc.).
A common way to determine paths in a legacy Layer 2 network is to have switches build a minimum spanning tree (MST) and then turn off the links that are not part of the spanning tree. The path between hosts is simply the path between them in the tree. However, relying on the network-computed spanning tree limits the diversity of paths available and unnecessarily extends many paths, thereby negatively affecting end-to-end performance. An original purpose of running MST is to avoid loops in a network. By default, when a switch sees a packet with unknown properties or when a switch receives a broadcast packet, it conventionally sends it on all interfaces (e.g., ports) except the incoming one. However, if the network topology includes loops, then packets may continually loop around indefinitely.